iT邦幫忙

2022 iThome 鐵人賽

DAY 23
1
Modern Web

Laravel 9 漫遊,享受魔法般的極速網頁開發體驗系列 第 23

Day 23:Laravel 存取其他伺服器:Http Client

  • 分享至 

  • xImage
  •  

能建立檔案之後,當然也要能讀取檔案囉!最好是能夠讀取遠端服務的檔案,這樣除了資料庫內的資料之外,就能有更多樣的資料來源了。

今天我們來聊 Laravel 怎麼利用 Http Client 取得其他伺服器裡面的檔案!

Laravel 裡面已經安裝好了 guzzlehttp 套件,並且做了一層包裝。

我們只要使用 Illuminate\Support\Facades\Http 就能取得其他伺服器的回應

use Illuminate\Support\Facades\Http;
 
$response = Http::get('https://www.google.com');

取得回應之後,我們就能根據該回應的內容,判斷後續對應的行為。

比方說,可以取得回應的 Http Status

$response->status()

或者取得回應的 Header key-value pair 的陣列

$response->headers()

又或者取得回應的 body

$response->body()

當然,有時候資料不能這麼簡單的透過 HTTP GET 取得

可能必須透過 POST 取得

$response = Http::post('http://example.com/users', [
    'name' => 'Steve',
    'role' => 'Network Administrator',
]);

有些網站接收的不是 API 格式的內容,而是網頁的 Form Submit

$response = Http::asForm()->post('http://example.com/users', [
    'name' => 'Sara',
    'role' => 'Privacy Consultant',
]);

或者接收的不是純文字內容的請求,而是在請求的 body 內包含檔案

$response = Http::withBody(
    base64_encode($photo), 'image/jpeg'
)->post('http://example.com/photo');

另外,也有可能其他伺服器需要特定格式的 Header 才接收請求

$response = Http::withHeaders([
    'X-First' => 'foo',
    'X-Second' => 'bar'
])->post('http://example.com/users', [
    'name' => 'Taylor',
]);

以上這些需求,都能很簡單的用 Laravel 做到。

今天有關 Laravel 使用 Http Client 的作法,就介紹到這邊,我們明天見!


上一篇
Day 22:用 Laravel 來處理檔案!
下一篇
Day 24:Laravel 9 對快取的操作
系列文
Laravel 9 漫遊,享受魔法般的極速網頁開發體驗30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言